/**
 * @author wn
 * @date 2022/10/28 15:39:30
 * @description: element-plus 表单校验规则
 */

/**
 *  input 框 应该选 , trigger: 'blur'  失去焦点
 *  下拉框 el-select、日期选择器 el-date-picker、
 *  复选框 el-checkbox、单选框 el-radio验证时，trigger的值选择change
 *
 *  经过测试 什么也不设置 效果 与上面  分别设置一致
 *
 *  自定义校验规则  两个参数(接收参数,校验参数) 一个 回调 callback 是否有 Error
 */
export default {
	// 用户名
	name: [
		{ required: true, message: '请输入姓名' },
		{ min: 2, max: 6, message: '名字长度2-6之间' },
	],
	// 年龄
	age: [{ required: true, type: 'number', message: '请输入年龄' }],
	// 性别
	sexLabel: [{ required: true, message: '请选择性别' }],
	// 生日
	birth: [{ type: 'date', required: true, message: '请选择日期' }],
	// 地址
	addr: [{ required: true, message: '请输入地址' }],
}

// custom  自定义校验规则   接收   form实例  与 formData
// rule 中接收参数  导致直接校验 原因不明  这里通过函数 传递参数
export const customRules = (formInstance, formData) => ({
	// 账号
	account: [
		{
			required: true,
			validator: validateAccount(formInstance, formData),
			// formInstance: formInstance,
			// formData: formData,
		},
	],
	// 密码
	pass: [
		{
			required: true,
			validator: validatePass(formInstance, formData),
		},
	],
})

const validateAccount = (formInstance, formData) => (rule, value, callback) => {
	if (!value) {
		return callback(new Error('账户不能为空'))
	}
	callback()
}
const validatePass = (formInstance, formData) => (rule, value, callback) => {
	if (!value) {
		return callback(new Error('密码不能为空'))
	}
	callback()
}
